package com.testing.sqlUtil;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Classname MysqlTest
 * @Description 类型说明
 * @Date 2020/12/29 20:14
 * @Created by 特斯汀Roy
 */
public class MysqlTest {

    public static void main(String[] args) throws Exception {
        //1、使用mysql连接驱动jdbc
        Class.forName("com.mysql.jdbc.Driver");

        //2、输入ip、端口、数据库名、用户名密码 创建连接
        //url格式： 协议jdbc:mysql:// IP : 端口/连接的数据库名 ？参数配置
        Connection roycon= DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/test_project?" +
                        "useSSL=false&useUnicode=true&characterEncoding=utf-8",
                "root","roy123456");
        queryResult(roycon);

    }

    public static void queryResult(Connection roycon) throws SQLException {
        //3、创建查询
        Statement roystatement = roycon.createStatement();
        //4、编写查询语句
        String sql="select * from userinfo where  password='123456'";
        //5、执行查询
        ResultSet resultSet = roystatement.executeQuery(sql);
        //         获取表头信息，方便遍历每一列的内容
        ResultSetMetaData thead=resultSet.getMetaData();
//        resultSet.next();
//        System.out.println(resultSet);
//        System.out.println(resultSet.getString("username"));
//        System.out.println(resultSet.getString("password"));


//        //一行信息存储到map中
//        Map<String,String> resultmap=new HashMap<>();
//        //遍历表头信息的每一列，获取列名和值。
//        resultSet.next();
//       for(int column=1;column<=thead.getColumnCount();column++){
//           resultmap.put(thead.getColumnName(column),resultSet.getString(column));
//           System.out.println("第"+column+"列的字段是"+thead.getColumnName(column)+"内容是"+resultSet.getString(column));
//       }
//        System.out.println(resultmap);

        //查询到的数据不止一条?怎么办？
        //使用一个list，把所有的map都存起来。
        List<Map<String,String>> resultlist=new ArrayList<>();
        //使用循环，读取resultSet中的每一行，通过next()取值。
        while(resultSet.next()){
            //循环中，每获取一次数据，创建一个新的map来存这一行的值
            //一行信息存储到map中
            Map<String,String> resultmap=new HashMap<>();
            //遍历表头信息的每一列，获取列名和值。
            for(int column=1;column<=thead.getColumnCount();column++){
                resultmap.put(thead.getColumnName(column),resultSet.getString(column));
                System.out.println("第"+column+"列的字段是"+thead.getColumnName(column)+"内容是"+resultSet.getString(column));
            }
            System.out.println(resultmap);
            //将每一行的数据map存到list里面
            resultlist.add(resultmap);

        }
        System.out.println(resultlist);
    }

}
